set_bit(_VCPUF_cpu_migrated, &v->vcpu_flags);
v->processor = newcpu;
}
+
+void sync_vcpu_execstate(struct vcpu *v)
+{
+ ia64_save_fpu(v->arch._thread.fph);
+#ifdef CONFIG_VTI
+ if (VMX_DOMAIN(v))
+ vmx_save_state(v);
+#else
+ if (0) do {} while(0);
+#endif
+ else {
+ if (IA64_HAS_EXTRA_STATE(v))
+ ia64_save_extra(v);
+ }
+ // FIXME SMP: Anything else needed here for SMP?
+}
regs->r8 = do_dom0_op(regs->r14);
break;
- case __HYPERVISOR_dom_mem_op:
+ case __HYPERVISOR_memory_op:
#ifdef CONFIG_VTI
regs->r8 = do_dom_mem_op(regs->r14, regs->r15, regs->r16, regs->r17, regs->r18);
#else
#include <xen/multiboot.h>
#include <xen/sched.h>
#include <xen/mm.h>
+#include <public/version.h>
//#include <xen/delay.h>
#include <xen/compile.h>
//#include <xen/console.h>
printk("About to call startup_cpu_idle_loop()\n");
startup_cpu_idle_loop();
}
+
+void arch_get_xen_caps(xen_capabilities_info_t *info)
+{
+ char *p=info->caps;
+
+ *p=0;
+
+ p+=sprintf(p,"xen_%d.%d_ia64 ",XEN_VERSION,XEN_SUBVERSION);
+
+ BUG_ON((p-info->caps)>sizeof(*info));
+
+ if(p>info->caps) *(p-1) = 0;
+}
+
/* If pmt table is provided by control pannel later, we need __get_user
* here. However if it's allocated by HV, we should access it directly
*/
-#define phys_to_machine_mapping(d, gpfn) \
+#define get_mfn_from_pfn(d, gpfn) \
((d) == dom0 ? gpfn : \
(gpfn <= d->arch.max_pfn ? (d)->arch.pmt[(gpfn)] : \
INVALID_MFN))
machine_to_phys_mapping[(mfn)]
#define __gpfn_to_mfn(_d, gpfn) \
- phys_to_machine_mapping((_d), (gpfn))
+ get_mfn_from_pfn((_d), (gpfn))
#define __gpfn_invalid(_d, gpfn) \
(__gpfn_to_mfn((_d), (gpfn)) & GPFN_INV_MASK)
unsigned long l;
void *p;
} xen_va;
+
+static inline int get_order_from_bytes(physaddr_t size)
+{
+ int order;
+ size = (size-1) >> PAGE_SHIFT;
+ for ( order = 0; size; order++ )
+ size >>= 1;
+ return order;
+}
+
+static inline int get_order_from_pages(unsigned long nr_pages)
+{
+ int order;
+ nr_pages--;
+ for ( order = 0; nr_pages; order++ )
+ nr_pages >>= 1;
+ return order;
+}
+
#endif
#undef __pa
#endif // CONFIG_VTI
#define XEN_START_ADDR 0xf000000000000000
+#define HYPERVISOR_VIRT_START 0xf000000000000000
#undef KERNEL_START
#define KERNEL_START 0xf000000004000000
#undef PERCPU_ADDR